In version 3.2 of the Macintosh operating system and subsequent versions, distributed by Apple Computer, a mechanism in the file system issues identifications for file structures, such as, for example, folders and files, which are unique within the file system of a particular computer. In this file system, called the Hierarchical File System, a newly-created file structure is assigned an identification which is based on the value of a counter. The counter is initialized and incremented with respect to each assignment of an identification to a file structure. However, the mechanism in the Macintosh operating system is not designed to handle a network of computer systems. The file system of the Macintosh operating system is described in "Inside Macintosh, Volume IV, Chapter 19, Addison-Wesley Publishing Co., 1986 and "Inside Macintosh: Files", Addison-Wesley Publishing Co., 1992.
A networked computer system comprises one or more network entities such as computers, printers, servers, routers, users, gateways, processes, tasks, communication points, etc. The term "server" is used herein to denote any computer or software application which responds to a request of another computer or software application. The term "client" is used to denote an initiator of a request, either a user or a computer device, while server is used to denote an acceptor of that request.
Each entity may be described by one or more storage records, herein referred to as "records", each record containing items of information which pertain to that entity. For example, if the entity is a printer entity, then corresponding records may contain a name, an electronic address and paper size information.
Generally, in a networked computer system having a very large number of entities, a structure including one or more groupings of entities is maintained. The organizational model of this structure varies from system to system or from networked computer system to networked computer system.
In some systems the structure is organized in a hierarchical format, containing logical groupings of entities called catalogs. Each catalog may contain one or more subordinate catalogs, herein referred to as sub-catalogs, thereby permitting structures of varying depths. Records for a network entity may be included in one or more catalogs.
Typically, it is desirable for each entity and each of its records on the network to have a unique identification because ambiguities may arise when two or more entities or records have the same identification. For example, if two entities have the same identification and a third entity sends a communication over the network specifying that identification, it is unclear which entity is the intended recipient of the communication. Likewise, if a user is attempting to access a particular record and two or more records have the same identification, then, in the absence of other information, it is unclear which record to access. Thus, to avoid ambiguities, it is preferable for each entity and record in a networked computer environment to have a unique identifier.
Unique identifiers are discussed generally in "Distributed Systems--Architecture and Implementation", Chapter 9, B. W. Lampson, Springer-Verlag Berlin Heidelberg, 1981, and "Distributed Systems", Chapter 12, Addison-Wesley Publishing Co., 1993. The former describes unique identifiers having a structure with two components: a server identifier and a unique local identifier. The unique local identifier is unique within the domain of the server identifier. It is suggested that the server identifier is an address of a server.
In some networked computer systems, such as the Xerox Network Systems products, an identifier is created by concatenating a time stamp with an Ethernet host identifier. Xerox Network Systems is a trademark and Xerox is a registered trademark of Xerox Corporation. The time stamp includes the date and time, including seconds. An Ethernet card typically includes a unique identification assigned at manufacturing time. This technique has several drawbacks however. First, it includes a hardware limitation in that each server entity generally has to include an Ethernet card. Second, the technique depends upon ensuring that the internal clock does not move backwards or stop and that more than one identifier is not issued during a single second, thereby possibly reusing a time stamp. Thus, timing servers and other precautions are used to attempt to keep the timing in sync and to keep the timing hardware and software operating. Typically, the system keeps track of the last time stamp issued and checks that the next time stamp issued is chronologically later.
In some networked computer systems, records are identified by character strings which bear some relationship to the information stored in the record. For example, in a database where each record corresponds to an individual user, the identification of a record might be the name of the user. However, two or more users may have the same name, thereby creating ambiguities. Moreover, when a user changes his or her name, the corresponding item identification is changed.
Several methods can be used to generate unique identifications for entities in a networked computer system. In some networked computer systems, one or more persons act as administrators and assign a unique number to each server for each domain. However, this system can be tedious and is vulnerable to human error.
The system can be tedious because an entity or its representative contacts human personnel to receive an identification. The human personnel uses a list, computerized or manual, in order to derive an identification to assign to the entity.
Human error may cause the same identification to be assigned to two or more entities. In a situation where two or more administrators assign identifications using a common list of identifications, a breakdown in contact, either through miscommunication or a shutdown of the communications system, can result in two or more administrators assigning the same number to two or more different entities. If the entities embed these identifications in their records, it can be difficult to correct the error, if and when the error is discovered.
Rather than assigning identifiers using human administrators, a central server, herein called a "seed server" can be used. The use of a central unique identifier generator is suggested in "Distributed Systems--Architecture and Implementation" at page 195.
In networked systems which employ a seed server method there is a risk of bottleneck because there is a single source for assigning identifications in the system. Additionally, if the seed server is unreadable, unreachable or otherwise unable to effectively assign an identification when a new server is installed in the network system, an operator generally intervenes to handle the installation of the new server. When the seed server subsequently becomes available it is updated with the information about the servers which were installed during that inoperative or problematic period. A discrepancy or error related to the updating of the seed server, could potentially result in the same identification being assigned to two different servers.